

package top.continew.admin.question.manger.service;

import top.continew.admin.question.manger.service.model.*;

import java.util.List;

public interface TestService {
    /**
     * 获取试卷列表
     */
    List<TestListVO> getList(TestParam testParam);

    /**
     * 添加修改试卷
     */
    AddUpTest addUpTest(AddUpTest addUpTest);

    TestInfoVO getInfo(long id);

    TestStructureVO saveTestStructure(long id, Long testStructureId, String name, double score);

    List<TestStructureVO> getTestStructure(long id);

    void deleteTestStructure(String testId, String id);

    void testStructureSort(String testId, String id, long sort);

    void commitCheck(String testId, Long checkPeople);

    void commitReview(String testId, Long reviewPeople);

    void review(String testId);

    void rejectReview(String testId, String msg);

    void rejectReviewMultiple(String testIds, String msg);

    void rejectCheck(String testId, String msg);

    void rejectCheckMultiple(List<Long> testIds, String msg);

    double saveQuestion(Long testStructureId, Long testId, long questionId, double score, boolean isUpdateProvenance);

    void upQuestion(Long testStructureId, Long testId, String questionId, long sort);

    void deleteTestQuestion(Long testStructureId, Long testId, String questionId);

    boolean delTest(Long id, Long userId);

    boolean verExistNoReviewQuestion(Long testId);

    boolean verExistStructureQuestion(Long id);

    /**
     * @param id
     *               考试id
     * @param type
     *               类型,1,班级,2,课程
     * @param typeId
     *               类型id
     */
    void bindClassOrCurriculum(long id, long type, long typeId);

    /**
     * 查询考试关联的班级或者课程
     */
    List<Value> getClassOrCurriculum(long id);

    /**
     * 抽检的试卷
     */
    List<SpotCheckTestVO> getSpotCheckTestList(QuerySpotCheckTest querySpotCheckTest);

    /**
     * 抽检的题目数量
     */
    SpotCheckQuestionSum getSpotCheckQuestionSum(QuerySpotCheckTest querySpotCheckTest);

    /**
     * 批量设置
     */
    void batchBindClassOrCurriculum(long id, List<Value> values);
}
